Theory of computation lecture